iT邦幫忙

2026 iThome 鐵人賽

DAY 0
0
Security

從 Linux 到 Pwn:30 天學習資安攻防系列 第 26 篇

Day 25|Argument 的 Argument:使用參數讀取指定檔案 前言

  • 分享至 

  • xImage
  •  

昨天的 Day 24,我們學習了如何閱讀程式的使用說明,並透過 --giveflag 這個參數,讓程式正確執行。
今天則要再往前一步。有些命令列參數不只是告訴程式要執行什麼功能,還需要額外提供一個值,讓程式知道要處理哪個目標。
例如,我們之前學過的 find 其中 -name 後面還需要提供 flag,才能指定要搜尋的檔案名稱。
今天的題目就是要理解這種用法,並利用 /challenge/challenge 提供的功能讀取真正的 Flag。


一、什麼是 Argument 的 Argument?

一般來說,執行程式時可以在後面加上參數,改變程式的執行方式。
例如 ls -a 這裡的 -a 是參數,會讓 ls 顯示隱藏檔案。
但有些參數還需要額外的值。
例如 find / -name flag
可以拆解成

部分 功能
find 執行搜尋
/ 指定搜尋起點為根目錄
-name 指定以名稱作為搜尋條件
flag 指定要尋找的名稱

因此,-name 後面的 flag 就是提供給該參數的值。
今天要學習的概念也是一樣,有些參數需要額外的資訊,才能完成指定的功能。


二、認識今天的程式

題目:Learning Complex Usage
題目提供的程式是 /challenge/challenge
根據題目文件,這個程式支援 --printfile 參數,可以將指定檔案的內容輸出到終端機。
例如,題目提供的範例 /challenge/challenge --printfile /etc/hostname

這個指令會讀取 /etc/hostname,並將內容印出來。
我們可以把它拆成三個部分

/challenge/challenge → 要執行的程式

--printfile → 指定要輸出檔案內容

/etc/hostname → 要讀取的檔案路徑

這次的重點就在於,--printfile 後面還需要提供一個檔案路徑。
如果沒有指定目標,程式就無法知道我們想讀取哪個檔案。


三、今天的挑戰與實際操作

今天的題目要求我們取得 /flag 的內容。
而程式已經提供了讀取檔案的功能,因此不需要另外撰寫程式,也不需要修改檔案。
只要把 /flag 當成 --printfile 的參數值即可。
指令如下
https://ithelp.ithome.com.tw/upload/images/20261011/20183180UdrHqXmRIo.png
程式成功取得 Flag!
這代表我們不只正確提供了 --printfile 參數,也成功指定了要讀取的檔案路徑。

這個指令可以理解成

執行 /challenge/challenge
            ↓
接收 --printfile 參數
            ↓
取得指定路徑 /flag
            ↓
讀取檔案並輸出內容

這代表我們不只正確提供了 --printfile 參數,也成功指定了要讀取的檔案路徑。


四、今天的心得

今天的題目延續了昨天的命令列參數概念,讓我進一步理解到,有些參數本身還需要額外的值。以今天的 --printfile 為例,光是提供參數還不夠,還必須告訴程式要讀取哪個檔案。這也讓我重新注意到閱讀文件的重要性。當我們使用不熟悉的程式時,如果只靠猜測參數,很容易忽略程式真正需要的資訊;相反地,先閱讀文件,就能更清楚地理解正確的使用方式。這個觀念不只適用於 pwn.college,也適用於未來使用 Linux 系統工具、資安分析工具,以及其他需要透過命令列操作的程式。


上一篇
Day 24|Learning from Documentation:學會閱讀程式使用說明
下一篇
Day 26|閱讀 Linux 手冊:使用 man 找出隱藏參數
系列文
從 Linux 到 Pwn:30 天學習資安攻防 共 28 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言